﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace TumbaloSoft.Models
{
    public class Edificio//talvez deberia heredar de inmueble
    {
        private string nombre;
        private int idEdificio;
        private string direccion;
        private int nroPisos;
        private int nroDepartamentos;
        private double area;
        private string informacion;
        private string estado;        
        private Distrito distrito;
        private List<AreaComun> listaAreasComunes;
        private List<Departamento> listaDepartamentos = new List<Departamento>();
        private List<PeriodoLaboral> listaPeriodosLaborales;
        private List<Cochera> listaCocheras;
        private List<Oficina> listaOficinas;
        private string logo;
        private double monto;
        private bool tieneContometro;

        public string prTieneContometro
        {
            get
            {
                if (tieneContometro)
                    return "1";
                else
                    return "0";
            }
            set
            {
                if (value == "1") { tieneContometro = true; }
                else tieneContometro = false;
            }
        }

        [Required(ErrorMessage="Se requiere que se ingrese el costo de mantenimeinto")]
        [Range(Double.Epsilon,100000,ErrorMessage="El valor debe ser un número real positivo menor que 100 000")]
        public double prMonto
        {
            get { return monto; }
            set { monto = value; }
        }

        public string prLogo
        {
            get { return logo; }
            set { logo = value; }
        }
        

        private List<Oficina> prListaOficinas
        {
            get { return listaOficinas; }
            set { listaOficinas = value; }
        }

        private List<Cochera> prListaCocheras
        {
            get { return listaCocheras; }
            set { listaCocheras = value; }
        }

        public Distrito prDistrito
        {
            get { return distrito; }
            set { distrito = value; }
        }

        private List<PeriodoLaboral> prListaPeriodosLaborales
        {
            get { return listaPeriodosLaborales; }
            set { listaPeriodosLaborales = value; }
        }

        public List<Departamento> prListaDepartamentos
        {
            get { return listaDepartamentos; }
            set { listaDepartamentos = value; }
        }

        public List<AreaComun> prListaAreasComunes
        {
            get { return listaAreasComunes; }
            set { listaAreasComunes = value; }
        }

        [StringLength(255, ErrorMessage = "El campo no puede tener mas de 255 caracteres")]
        public string prInformacion
        {
            get { return informacion; }
            set { informacion = value; }
        }
        [Range(1, 10000,ErrorMessage="El valor del Area debe ser entre 1 y 10 000")]
        public double? prArea
        {
            get { return area; }
            set { if(value.HasValue)area = value.Value; }
        }
        [Range(0, 10000, ErrorMessage = "El numero de departamentos debe ser entre 1 y 10 000")]
        public int? prNroDepartamentos
        {
            get { return nroDepartamentos; }
            set {if (value.HasValue) nroDepartamentos = value.Value;}
        }
        [Range(1, 10000, ErrorMessage = "El numero de pisos debe ser entre 1 y 10 000")]
        public int? prNroPisos
        {
            get { return nroPisos; }
            set { if (value.HasValue) nroPisos = value.Value; }
        }

        [Required(ErrorMessage= "Se requiere la dirección del Edificio")]
        [StringLength(255,ErrorMessage="La Direcion no puede tener mas de 255 caracteres")]
        public string prDireccion
        {
            get { return direccion; }
            set { direccion = value; }
        }
        [Required(ErrorMessage = "Se requiere el codigo de edificio")]
        [Range(1,10000)]
        
        public int prIdEdificio
        {
            get { return idEdificio; }
            set { idEdificio = value; }
        }
        [Required(ErrorMessage = "Se requiere el nombre del Edificio")]
        [StringLength(255, ErrorMessage = "El nombre no puede tener mas de 255 caracteres")]
        public string prNombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
        public string prEstado
        {
            get { return estado; }
            set { estado = value; }
        }   

    }
}